class Person {
  String? name;
  static Person? instance;

  //工厂模式 用 factory 关键字修饰, 其实就是单例模式 
  factory Person([String name = '张三']){
    //工厂模式的构造函数中不能使用 this 关键字
    // this.name
    if (Person.instance == null) {
      Person.instance = Person.newSelf(name);
    }
    return Person.instance!;
  }

  //命名构造函数
  Person.newSelf(this.name);
}

void main(List<String> args) {

  Person p1 = Person('李四');
  print(p1.name);

  Person p2 = Person('王麻子');
  print(p2.name);
}